🎖️GitЯра🎖️
Commit f3d030527ac1587901407371594d7fe2e4246a6c
Parents : c27df15
Author : Mac DeCourcy <49794076+mdecourcy@users.noreply.github.com>
Signature : Signature validation error
Date : 2025-12-01T03:54:44-08:00
Committer : GitHub <noreply@github.com>
Date : 2025-12-01T11:54:44Z
fix: autofocus in message threads (#3869)
Changes
1 files changed, 7 insertions(+), 1 deletions(-)
Diff
diff --git a/feature/messaging/src/main/kotlin/org/meshtastic/feature/messaging/Message.kt b/feature/messaging/src/main/kotlin/org/meshtastic/feature/messaging/Message.kt
index 30c86942e4..8b4360354d 100644
--- a/feature/messaging/src/main/kotlin/org/meshtastic/feature/messaging/Message.kt
+++ b/feature/messaging/src/main/kotlin/org/meshtastic/feature/messaging/Message.kt
@@ -22,6 +22,7 @@ package org.meshtastic.feature.messaging
import android.content.ClipData
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.background
+import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope
@@ -85,6 +86,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.platform.LocalClipboard
+import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.text.input.KeyboardCapitalization
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
@@ -158,6 +160,7 @@ fun MessageScreen(
) {
val coroutineScope = rememberCoroutineScope()
val clipboardManager = LocalClipboard.current
+ val focusManager = LocalFocusManager.current
val nodes by viewModel.nodeList.collectAsStateWithLifecycle()
val ourNode by viewModel.ourNodeInfo.collectAsStateWithLifecycle()
@@ -175,6 +178,9 @@ fun MessageScreen(
val messageInputState = rememberTextFieldState(message)
val showQuickChat by viewModel.showQuickChat.collectAsStateWithLifecycle()
+ // Prevent the message TextField from stealing focus when the screen opens
+ LaunchedEffect(contactKey) { focusManager.clearFocus() }
+
// Derived state, memoized for performance
val channelInfo =
remember(contactKey, channels) {
@@ -337,7 +343,7 @@ fun MessageScreen(
}
},
) { paddingValues ->
- Column(Modifier.padding(paddingValues)) {
+ Column(Modifier.fillMaxSize().padding(paddingValues).focusable()) {
Box(modifier = Modifier.weight(1f)) {
MessageListPaged(
modifier = Modifier.fillMaxSize(),
Served by rngit 1.5.0 - Generated in 0.04s